/*
*@功能：ESP32平衡车霍尔编码器测速测试
*@作者：刘泽文
*@时间：2020/3/18
*/

#include <Arduino.h>
#include <math.h>
#include "mycar.h"

void setup() 
{
   Serial.begin(115200);//串口初始化
   pinMode(LEFT_A_PIN,INPUT);
   pinMode(LEFT_B_PIN,INPUT);//AM1、BM2引脚的输入方式
   Encoder_time.sample_time = 10;
}

void loop() 
{
  Encoder_time.refresh_time = millis();
  while((millis()-Encoder_time.refresh_time)<Encoder_time.sample_time)//在采样时间内对编码器计数(四倍频)
   {
      if(digitalRead(LEFT_A_PIN)==HIGH && LEFT_flagA==0){
        LEFT_valA++;
        LEFT_flagA=1;
        }
      if(digitalRead(LEFT_A_PIN)==LOW && LEFT_flagA==1){
        LEFT_valA++;
        LEFT_flagA=0;
        }
      if(digitalRead(LEFT_B_PIN)==HIGH && LEFT_flagB==0){
        LEFT_valB++;
        LEFT_flagB=1;
        }
      if(digitalRead(LEFT_B_PIN)==LOW && LEFT_flagB==1){
        LEFT_valB++;
        LEFT_flagB=0;
        }
    }

    LEFT_n=(LEFT_valA+LEFT_valB)/(Encoder_time.sample_time/1000);//计算转速
    Serial.printf("%f rad/s\n\r",LEFT_n);//输出转速数值
    //清零储存脉冲数的变量
    LEFT_valA=0;
    LEFT_valB=0;
}